package cascade

import (
	"reflect"

	"zstackgo/pkg/header/core"
	"zstackgo/spring"
)

func init() {
	spring.RegisterInterface("core.cascade.CascadeExtensionPoint", reflect.TypeOf((*CascadeExtensionPoint)(nil)).Elem())
}

type CascadeExtensionPoint interface {
	SyncCascade(action *CascadeAction) error
	AsyncCascade(action *CascadeAction, completion core.Completion)
	GetEdgeNames() []string
	GetCascadeResourceName() string
	CreateActionForChildResource(action *CascadeAction) *CascadeAction
}
